package cn.com.doone.common.uc.domain.rs;

import java.util.List;
import java.util.Map;

import cn.com.doone.common.uc.service.dto.UserGroup;
import cn.com.doone.common.uc.service.dto.UserGroupMember;
import cn.com.doone.common.uc.service.dto.UserInfo;

public interface ISyncJdbcRepository {
	
	/**
	 * 验证租户码是否存在
	 * 
	 * @param tenantCode
	 * @return
	 */
	public boolean validTenantCode(String tenantCode);
	
	/**
	 * 验证组编号是否存在
	 * 
	 * @param tenantCode
	 * @return
	 */
	public boolean validGroupCode(String groupCode);
	
	/**
	 * 添加用户组
	 * 
	 * @param userGroup
	 * @return
	 */
	public int addUserGroup(UserGroup userGroup);
	
	/**
	 * 修改用户组
	 * 
	 * @param userGroup
	 * @return
	 */
	public void updateUserGroup(UserGroup userGroup);
	
	/**
	 * 删除用户组
	 * 
	 * @param userGroup
	 * @return
	 */
	public void deleteUserGroup(UserGroup userGroup);
	
	/**
	 * 根据编号获取组信息
	 * 
	 * @param groupCode
	 * @return
	 */
	public Map<String, Object> findUserGroupByGroupCode(String groupCode);
	
	
	/**
	 * 添加用户
	 * 
	 * @param userInfo
	 * @return
	 */
	public int addUserInfo(UserInfo userInfo);
	
	/**
	 * 修改用户
	 * 
	 * @param userInfo
	 * @return
	 */
	public void updateUserInfo(UserInfo userInfo);
	
	/**
	 * 更新东网通行证
	 * 
	 * @param userInfo
	 * @return
	 */
	public void updateDooneCode(UserInfo userInfo);
	
	/**
	 * 删除用户
	 * 
	 * @param userGroup
	 * @return
	 */
	public void deleteUserInfo(UserInfo userInfo);
	
	/**
	 * 添加组用户
	 * 
	 * @return
	 */
	public void addUserGroupMember(UserGroupMember userGroupMember);
	
	/**
	 * 更新组用户
	 * 
	 * @param userGroupMember
	 * @return
	 */
	public void updateUserGroupMember(UserGroupMember userGroupMember);
	
	/**
	 * 删除组用户
	 * 
	 * @param userGroupMember
	 * @return
	 */
	public void deleteUserGroupMember(UserGroupMember userGroupMember);
	
	/**
	 * 查看组用户
	 * 
	 * @param userGroupMember
	 * @return
	 */
	public boolean findUserGroupMember(UserGroupMember userGroupMember);
	
	/**
	 * 根据APP_CODE查询租户
	 * 
	 * @return
	 */
	public List<Map<String, Object>> findTenantByAppCode(String appCode);
	
	
	/**
	 * 查询未更新的组
	 * 
	 * @param groupCode
	 * @param updateTime
	 * @return
	 */
	public List<Map<String, Object>> findGroupByTenantAndUpdateTime(String groupCode, String updateTime);
	
	/**
	 * 查询未更新的用户
	 * 
	 * @param groupCode
	 * @param updateTime
	 * @return
	 */
	public List<Map<String, Object>> findUserByTenantAndUpdateTime(String groupCode, String updateTime);
	
	/**
	 * 查询未更新的组成员
	 * 
	 * @param groupCode
	 * @param updateTime
	 * @return
	 */
	public List<Map<String, Object>> findGroupMemberByTenantAndUpdateTime(String groupCode, String updateTime);

}
